/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores;

import DAOS.DAOChofer;
import DAOS.DAOSocios;
import Modelos.Socio;
import Vistas.VSocios;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Date;


public class ControladorSocio extends KeyAdapter implements ActionListener, KeyListener 
{
    private VSocios vsocio;
    private DAOSocios sociosDAO;
    
    public ControladorSocio() 
    {
        super();
        vsocio = new VSocios();
        sociosDAO = new DAOSocios();
        vsocio.agregarListener(this);
        vsocio.setLocationRelativeTo(null);
        vsocio.setVisible(true);
        
        enableBotones(false);
        
        vsocio.getBtnNuevo().setEnabled(true);
        vsocio.getBtnSalir().setEnabled(true);
        vsocio.getBtnBuscar().setEnabled(true);
        vsocio.getBtnCancelar().setEnabled(true);
        
        
        CargarTablaSocios();
        
        vsocio.getTxtCedula().addKeyListener(new KeyAdapter()
    { 

        @Override
        public void keyTyped(KeyEvent e) 
        {     
            if(Character.isAlphabetic(e.getKeyChar())){ //validando que NO es numero
			e.consume(); //Desecha el caracter
            }
            
            String Cadena=vsocio.getTxtCedula().getText();
            if (Cadena.length()==8)
            {  
                e.consume();   
                return;
            } 
            
            
        }
        
        
                  
        @Override
        public void keyPressed(KeyEvent e) 
        {
            cedulakeyPressed(e);            
        }
    }
                 
                 
    );
        
          vsocio.getTxtNombre().addKeyListener(new KeyAdapter() 
       {
           @Override
          public void keyTyped(KeyEvent e) 
             {
               		if(Character.isDigit(e.getKeyChar())){ //validando que NO es numero
			e.consume(); //Desecha el caracter
		}
             }
       }
       );
          
          vsocio.getTxtTelefono().addKeyListener(new KeyAdapter() 
       {
           @Override
          public void keyTyped(KeyEvent e) 
             {
               		if(Character.isAlphabetic(e.getKeyChar())){ //validando que NO es numero
			e.consume(); //Desecha el caracter
		}
             }
       }
       );   
        
        
        
    }
    
    
    private void CargarTablaSocios()
   {
      
    int Fila;
    Socio socio=new Socio();
    sociosDAO.getSocios().clear();
    sociosDAO.cargarSocios();
    vsocio.getTabSocios().removeAll();

    for (Fila=0;Fila<sociosDAO.getSocios().size();Fila++)
    {
       socio=sociosDAO.getSocios().get(Fila);

       vsocio.getTabSocios().setValueAt(socio.getCedula(), Fila, 0);
       vsocio.getTabSocios().setValueAt(socio.getNombre(), Fila, 1);
       vsocio.getTabSocios().setValueAt(socio.getDireccion(), Fila, 2);
       vsocio.getTabSocios().setValueAt(socio.getTelefono(), Fila, 3);
       vsocio.getTabSocios().setValueAt(socio.getFechaNacimiento(), Fila, 4);
       vsocio.getTabSocios().setValueAt(socio.getSexo(), Fila, 5);
       vsocio.getTabSocios().setValueAt(socio.getCargo(), Fila, 6);
       vsocio.getTabSocios().setValueAt(socio.getCodCoperativa(), Fila, 7);
    }     
   }
    
     public void actualizarSocio()
        {
            sociosDAO = new DAOSocios();
            sociosDAO.actualizarChofer(vsocio.getTxtCooperativa().getText(),vsocio.getTxtCargo().getText(), vsocio.getTxtCedula().getText(),vsocio.getTxtNombre().getText(), vsocio.getTxtDireccion().getText(), vsocio.getTxtTelefono().getText(),vsocio.getDchFecha().getDate(), vsocio.getCmbSexo().getSelectedItem().toString());
            vsocio.mostrarMensaje("El Socio ha sido modificado exitosamente");
            Limpiar();
            enableTxt(false);
            vsocio.getTxtCedula().setEnabled(true);
            vsocio.getTxtCedula().requestFocus();
            vsocio.getBtnActualizar().setEnabled(false);
            vsocio.getBtnBorrar().setEnabled(false);
            vsocio.getBtnNuevo().setEnabled(true);
            vsocio.getBtnBuscar().setEnabled(true);
            
            
            
            CargarTablaSocios();
        }
     public void eliminarSocio()
        {
            sociosDAO = new DAOSocios();
            sociosDAO.eliminarChofer(vsocio.getTxtCedula().getText());
            vsocio.mostrarMensaje("El Socio ha sido eliminado exitosamente");
            Limpiar();
            enableTxt(false);
            enableBotones(false);
            
            vsocio.getBtnBuscar().setEnabled(true);
            vsocio.getBtnNuevo().setEnabled(true);
            vsocio.getBtnSalir().setEnabled(true);
            vsocio.getBtnCancelar().setEnabled(true);
            vsocio.getTxtCedula().setEnabled(true);
            vsocio.getTxtCedula().requestFocus();
            vsocio.setTabSocios(null);
            CargarTablaSocios();
        }
       
       

    @Override
    public void actionPerformed(ActionEvent e) 
    {
        String cedula;
        String nombre;
        String direccion;
        String telefono;
        Date fecha;
        String sexo;
        String cargo;
        String codCoop;
        
         if(e.getSource().equals(vsocio.getBtnNuevo()))
            {
                    
                
                enableBotones(false);
                vsocio.getBtnGuardar().setEnabled(true);
                vsocio.getBtnCancelar().setEnabled(true);
                enableTxt(true);
                Limpiar();
                vsocio.getTxtCedula().requestFocus();
                vsocio.getTxtCedula().setEnabled(true);

            
            }
        
            if(e.getSource().equals(vsocio.getBtnCancelar()))
            {
                    
              enableBotones(false);
                enableTxt(false);
                
                Limpiar();
                
                vsocio.getBtnCancelar().setEnabled(true);
                vsocio.getBtnBuscar().setEnabled(true);
                vsocio.getBtnNuevo().setEnabled(true);
                vsocio.getBtnSalir().setEnabled(true);
                
                vsocio.getTxtCedula().setEnabled(true);
                vsocio.getTxtCedula().requestFocus();

            
            }
            
            
            
            if(e.getSource().equals(vsocio.getBtnBuscar()))
            {
                   String Cadena;
                    Socio socio=new Socio();
                    Cadena =vsocio.getTxtCedula().getText();
                    vsocio.getTxtCedula().setText(Cadena.toUpperCase());


                    if (Cadena.length() > 0) 

                    {
                      
                          socio=sociosDAO.buscarSocio(Cadena); 

                       vsocio.getTxtNombre().setText(socio.getNombre());
                       vsocio.getTxtDireccion().setText(socio.getDireccion()); 
                       vsocio.getDchFecha().setDate(socio.getFechaNacimiento());
                       vsocio.getTxtTelefono().setText(socio.getTelefono());
                       vsocio.getCmbSexo().setSelectedItem(socio.getSexo());
                       vsocio.getTxtCargo().setText(socio.getCargo());
                       vsocio.getTxtCooperativa().setText(socio.getCodCoperativa());


                        enableBotones(false);
                        vsocio.getBtnActualizar().setEnabled(true);
                        vsocio.getBtnBorrar().setEnabled(true);
                        vsocio.getBtnCancelar().setEnabled(true);
                        vsocio.getBtnSalir().setEnabled(true);
                        enableTxt(true);
                        vsocio.getTxtCedula().setEnabled(false);


                          vsocio.mostrarMensaje("El Socio ya existe");
                        

//                             else
//                       {
//
//                           enableBotones(false);
//                           vsocio.getBtnGuardar().setEnabled(true);
//                           vsocio.getBtnCancelar().setEnabled(true);
//                           enableTxt(true);
//                           vsocio.getTxtNombre().requestFocus();
//
//                       }



                    }

    }
        
        
        if (e.getSource().equals(vsocio.getBtnGuardar()))
        {            
           //Validar Campos vacios
            
           if (vsocio.getTxtCedula().getText().trim().length()==0)
           {
                vsocio.mostrarMensaje("El campo cedula no puede estar vacio");
                vsocio.getTxtCedula().requestFocus();
                return;
           }
           
           if (vsocio.getTxtNombre().getText().trim().length()==0)
           {
               vsocio.mostrarMensaje("El campo nombre no puede estar vacio");
               vsocio.getTxtNombre().requestFocus();
               return;
           }
           
           if (vsocio.getTxtDireccion().getText().trim().length()==0)
           {
               vsocio.mostrarMensaje("El campo direccion no puede estar vacio");
               vsocio.getTxtDireccion().requestFocus();
               return;
           }
           
           if (vsocio.getDchFecha().getDate().toString().trim().length()==0)
           {
               vsocio.mostrarMensaje("El campo Fecha de Nacimiento no puede estar vacio");
               vsocio.getDchFecha().requestFocus();
               return;
           }
           
           if (vsocio.getTxtTelefono().getText().trim().length()==0)
           {
               vsocio.mostrarMensaje("El campo Telefono no puede estar vacio");
               vsocio.getTxtTelefono().requestFocus();
               return;
           }
           
           if (vsocio.getCmbSexo().getSelectedIndex()==0)
           {
               vsocio.mostrarMensaje("Seleccione el Sexo del cliente");
               vsocio.getCmbSexo().requestFocus();
               return;
           }
           
          if (vsocio.getTxtCargo().getText().trim().length()==0)
           {
               vsocio.mostrarMensaje("El campo Cargo no puede estar vacio");
               vsocio.getTxtCargo().requestFocus();
               return;
           }
          
          if (vsocio.getTxtCooperativa().getText().trim().length()==0)
           {
               vsocio.mostrarMensaje("El campo Cod. Cooperativa no puede estar vacio");
               vsocio.getTxtCooperativa().requestFocus();
               return;
           }
           
                        
            cedula = vsocio.getTxtCedula().getText();
            nombre = vsocio.getTxtNombre().getText();
            direccion = vsocio.getTxtDireccion().getText();
            fecha = vsocio.getDchFecha().getDate();
            telefono = vsocio.getTxtTelefono().getText();
            sexo = vsocio.getCmbSexo().getSelectedItem().toString();
            cargo = vsocio.getTxtCargo().getText();
            codCoop = vsocio.getTxtCooperativa().getText();
                  
            
            //Guardar nuevo socio
            Socio socio = new Socio(cargo, codCoop, cedula, nombre, direccion, telefono, fecha, sexo);          
            sociosDAO.registrarSocios(socio);          
            CargarTablaSocios();
            
            vsocio.mostrarMensaje("Se ha agregado un socio nuevo");
            enableBotones(false);
            enableTxt(false);
            Limpiar();
            
            vsocio.getBtnBuscar().setEnabled(true);
            vsocio.getBtnNuevo().setEnabled(true);
            vsocio.getBtnCancelar().setEnabled(true);
            vsocio.getBtnSalir().setEnabled(true);
            
            vsocio.getTxtCedula().setEnabled(true);
            vsocio.getTxtCedula().requestFocus();
                
        }
        
        if(e.getSource().equals(vsocio.getBtnActualizar()))
        {
            actualizarSocio();
        }
        if(e.getSource().equals(vsocio.getBtnBorrar()))
        {
            eliminarSocio();
        }

        
        if(e.getSource().equals(vsocio.getBtnSalir()))
        {
            vsocio.dispose();
        }
      
    }
    
        private void cedulakeyPressed(KeyEvent e)    
{
   String Cadena;
   Socio socio=new Socio();
   Cadena =vsocio.getTxtCedula().getText();
   vsocio.getTxtCedula().setText(Cadena.toUpperCase());
      
   
   if (e.getKeyChar()==10 && Cadena.length() > 0) 
       
   {
                   
                          socio=sociosDAO.buscarSocio(Cadena); 

                       vsocio.getTxtNombre().setText(socio.getNombre());
                       vsocio.getTxtDireccion().setText(socio.getDireccion()); 
                       vsocio.getDchFecha().setDate(socio.getFechaNacimiento());
                       vsocio.getTxtTelefono().setText(socio.getTelefono());
                       vsocio.getCmbSexo().setSelectedItem(socio.getSexo());
                       vsocio.getTxtCargo().setText(socio.getCargo());
                       vsocio.getTxtCooperativa().setText(socio.getCodCoperativa());


                        enableBotones(false);
                        vsocio.getBtnActualizar().setEnabled(true);
                        vsocio.getBtnBorrar().setEnabled(true);
                        vsocio.getBtnCancelar().setEnabled(true);
                        vsocio.getBtnSalir().setEnabled(true);
                        enableTxt(true);
                        vsocio.getTxtCedula().setEnabled(false);


                          vsocio.mostrarMensaje("El Socio ya existe");
      
//            else
//      {
// 
//          enableBotones(false);
//          vsocio.getBtnGuardar().setEnabled(true);
//          vsocio.getBtnCancelar().setEnabled(true);
//          enableTxt(true);
//          vsocio.getTxtNombre().requestFocus();
//          
//      }
      


   }

}

    
        private void enableTxt(boolean Status)    
{
   vsocio.getTxtCedula().setEnabled(!Status);
   vsocio.getTxtNombre().setEnabled(Status); 
   vsocio.getTxtDireccion().setEnabled(Status);
   vsocio.getDchFecha().setEnabled(Status);
   vsocio.getTxtTelefono().setEnabled(Status);
   vsocio.getCmbSexo().setEnabled(Status);
   vsocio.getTxtCargo().setEnabled(Status);
   vsocio.getTxtCooperativa().setEnabled(Status);
   
} 
    
    private void Limpiar()    
{
   vsocio.getTxtCedula().setText("");
   vsocio.getTxtNombre().setText(""); 
   vsocio.getTxtDireccion().setText("");
   vsocio.getDchFecha().setDate(null);
   vsocio.getTxtTelefono().setText("");
   vsocio.getCmbSexo().setSelectedIndex(0);
   vsocio.getTxtCargo().setText("");
   vsocio.getTxtCooperativa().setText("");
}    
    
    private void enableBotones(boolean Status)
    {
        vsocio.getBtnGuardar().setEnabled(Status);
        vsocio.getBtnActualizar().setEnabled(Status);
        vsocio.getBtnBorrar().setEnabled(Status);
        vsocio.getBtnCancelar().setEnabled(Status);
        vsocio.getBtnNuevo().setEnabled(Status);
        vsocio.getBtnBuscar().setEnabled(Status);

        
    }
    
    
    
}
